package org.jeecgframework.web.material.entity;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToOne;
import javax.persistence.Table;

import org.hibernate.annotations.GenericGenerator;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.jeecgframework.poi.excel.annotation.ExcelEntity;

/**   
 * @Description: 产品信息
 * @date 2015-08-19 09:50:46
 * @version V1.0   
 *
 */
@Entity
@Table(name = "p_product", schema = "")
@SuppressWarnings("serial")
public class PProductEntity implements java.io.Serializable {
	//产品编号
	private java.lang.String id;
	//公司
	private CompanyEntity companyId;
	//产品名称
	@Excel(name="产品名称")
	private java.lang.String name;
	//一级分类
	@ExcelEntity()
	private PTypeEntity typeOne;
	//二级分类
	@ExcelEntity()
	private PTypeEntity typeTwo;
	//三级分类
	@ExcelEntity()
	private PTypeEntity typeThree;
	//产品描述
	@Excel(name="产品描述")
	private java.lang.String description;
	//产品备注
	@Excel(name="产品备注")
	private java.lang.String remark;
	//生产厂家
	@Excel(name="生产厂家")
	private java.lang.String manufacturer;
	//产品型号
	@Excel(name="产品型号")
	private java.lang.String model;
	//产品颜色
	@Excel(name="产品颜色")
	private java.lang.String color;
	//产品外观
	@Excel(name="产品外观")
	private java.lang.String appearance;
	//产品基础成本
	@Excel(name="产品基础成本")
	private java.lang.Double  basedCost;
	//附加成本
	@Excel(name="附加成本")
	private java.lang.Double additionalCost;
	//产品规格
	@Excel(name="产品规格")
	private java.lang.String specification;
	//安装费
	@Excel(name="安装费")
	private java.lang.Double installCost;
	//测量费
	@Excel(name="测量费")
	private java.lang.Double measureCost;
	
	
	/**
	 *get方法: 取得产品编号
	 */
	@Id
	@GeneratedValue(generator = "paymentableGenerator")
	@GenericGenerator(name = "paymentableGenerator", strategy = "uuid")
	@Column(name ="ID",nullable=false,length=32)
	public java.lang.String getId(){
		return this.id;
	}

	/**
	 *set方法: 设置产品编号
	 */
	public void setId(java.lang.String id){
		this.id = id;
	}
	/**
	 *get方法: 取得产品名称
	 */
	@Column(name ="NAME",nullable=true,length=45)
	public java.lang.String getName(){
		return this.name;
	}

	/**
	 *set方法: 设置产品名称
	 */
	public void setName(java.lang.String name){
		this.name = name;
	}
	/**
	 *get方法: 取得产品描述
	 */
	@Column(name ="DESCRIPTION",nullable=true,length=216)
	public java.lang.String getDescription(){
		return this.description;
	}

	/**
	 *set方法: 设置产品描述
	 */
	public void setDescription(java.lang.String description){
		this.description = description;
	}
	/**
	 *get方法: 取得产品备注
	 */
	@Column(name ="REMARK",nullable=true,length=512)
	public java.lang.String getRemark(){
		return this.remark;
	}

	/**
	 *set方法: 设置产品备注
	 */
	public void setRemark(java.lang.String remark){
		this.remark = remark;
	}
	/**
	 *get方法: 取得生产厂家
	 */
	@Column(name ="MANUFACTURER",nullable=true,length=45)
	public java.lang.String getManufacturer(){
		return this.manufacturer;
	}

	/**
	 *set方法: 设置生产厂家
	 */
	public void setManufacturer(java.lang.String manufacturer){
		this.manufacturer = manufacturer;
	}
	/**
	 *get方法: 取得产品型号
	 */
	@Column(name ="MODEL",nullable=true,length=45)
	public java.lang.String getModel(){
		return this.model;
	}

	/**
	 *set方法: 设置产品型号
	 */
	public void setModel(java.lang.String model){
		this.model = model;
	}
	/**
	 *get方法: 取得产品颜色
	 */
	@Column(name ="COLOR",nullable=true,length=45)
	public java.lang.String getColor(){
		return this.color;
	}

	/**
	 *set方法: 设置产品颜色
	 */
	public void setColor(java.lang.String color){
		this.color = color;
	}
	/**
	 *get方法: 取得产品外观
	 */
	@Column(name ="APPEARANCE",nullable=true,length=45)
	public java.lang.String getAppearance(){
		return this.appearance;
	}

	/**
	 *set方法: 设置产品外观
	 */
	public void setAppearance(java.lang.String appearance){
		this.appearance = appearance;
	}
	/**
	 *get方法: 取得产品基础成本
	 */
	@Column(name ="BASED_COST",nullable=true,length=22)
	public java.lang.Double getBasedCost(){
		return this.basedCost;
	}

	/**
	 *set方法: 设置产品基础成本
	 */
	public void setBasedCost(java.lang.Double  basedCost){
		this.basedCost =  basedCost;
	}
	/**
	 *get方法: 取得附加成本
	 */
	@Column(name ="ADDITIONAL_COST",nullable=true,length=45)
	public java.lang.Double getAdditionalCost(){
		return this.additionalCost;
	}

	/**
	 *set方法: 设置附加成本
	 */
	public void setAdditionalCost(java.lang.Double additionalCost){
		this.additionalCost = additionalCost;
	}
	/**
	 *get方法: 取得产品规格
	 */
	@Column(name ="SPECIFICATION",nullable=true,length=45)
	public java.lang.String getSpecification(){
		return this.specification;
	}

	/**
	 *set方法: 设置产品规格
	 */
	public void setSpecification(java.lang.String specification){
		this.specification = specification;
	}
	/**
	 *get方法: 取得安装费
	 */
	@Column(name ="INSTALL_COST",nullable=false,length=45)
	public java.lang.Double getInstallCost(){
		return this.installCost;
	}

	/**
	 *set方法: 设置安装费
	 */
	public void setInstallCost(java.lang.Double installCost){
		this.installCost = installCost;
	}
	/**
	 *get方法: 取得测量费
	 */
	@Column(name ="MEASURE_COST",nullable=false,length=45)
	public java.lang.Double getMeasureCost(){
		return this.measureCost;
	}

	/**
	 *set方法: 设置测量费
	 */
	public void setMeasureCost(java.lang.Double measureCost){
		this.measureCost = measureCost;
	}

	/**
	 * @return the companyId
	 */
	@OneToOne(fetch=FetchType.LAZY)
	@JoinColumn(name="company_id")
	public CompanyEntity getCompanyId() {
		return companyId;
	}

	/**
	 * @param companyId the companyId to set
	 */
	public void setCompanyId(CompanyEntity companyId) {
		this.companyId = companyId;
	}

	/**
	 * @return the typeOne
	 */
	@OneToOne(fetch=FetchType.EAGER)
	@JoinColumn(name="type_one")
	public PTypeEntity getTypeOne() {
		return typeOne;
	}

	/**
	 * @param typeOne the typeOne to set
	 */
	public void setTypeOne(PTypeEntity typeOne) {
		this.typeOne = typeOne;
	}

	/**
	 * @return the typeTwo
	 */
	@OneToOne(fetch=FetchType.EAGER)
	@JoinColumn(name="type_two")
	public PTypeEntity getTypeTwo() {
		return typeTwo;
	}

	/**
	 * @param typeTwo the typeTwo to set
	 */
	public void setTypeTwo(PTypeEntity typeTwo) {
		this.typeTwo = typeTwo;
	}

	/**
	 * @return the typeThree
	 */
	@OneToOne(fetch=FetchType.EAGER)
	@JoinColumn(name="type_three")
	public PTypeEntity getTypeThree() {
		return typeThree;
	}

	/**
	 * @param typeThree the typeThree to set
	 */
	public void setTypeThree(PTypeEntity typeThree) {
		this.typeThree = typeThree;
	}

	
}
